home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 27 / CU Amiga Magazine's Super CD-ROM 27 (1998)(EMAP Images)(GB)[!][issue 1998-10].iso / CUCD / PowerPC / vbcc / machines / amigawos / libsrc / stdio / fclose.c < prev    next >
C/C++ Source or Header  |  1998-08-02  |  539b  |  27 lines

  1. #include <stdio.h>
  2.  
  3. extern char *_stdin,*_stdout,*_stderr;
  4. extern FILE *_firstfile,*_lastfile;
  5.  
  6. int fclose(FILE *f)
  7. {
  8.   int r = (f->flags&_WRITE) ? fflush(f) : 0;
  9.  
  10.   if (f->filehandle!=_stdin && f->filehandle!=_stdout
  11.       && f->filehandle!=_stderr)
  12.     if (_close(f->filehandle))
  13.       r = EOF;
  14.   if (f->prev)
  15.     f->prev->next = f->next;
  16.   else
  17.     _firstfile = f->next;
  18.   if (f->next)
  19.     f->next->prev = f->prev;
  20.   else
  21.     _lastfile = f->prev;
  22.   if (f->base && !(f->flags&_NOTMYBUF))
  23.     free(f->base-1);
  24.   free (f);
  25.   return (r);
  26. }
  27.